#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>

static int baudrate = 9600;
static int port[4] = {0, 1, 2, 3};
static char *name = "parameter-default";

// 内核支持 bool invbool charp short int long ushort uint ulong 等参数类型及其复合而成的数组类型
module_param(baudrate, int, S_IRUGO);
module_param_array(port, int, NULL, S_IRUGO);
module_param(name, charp, S_IRUGO);

static int __init parameter_init(void)
{
    printk("parameter module init\n");
    printk("baudrate: %d \n", baudrate);
    printk("port: %d %d %d %d\n", port[0], port[1], port[2], port[3]);
    printk("name: %s\n", name);

    return 0;
}

static void __exit parameter_exit(void)
{
    printk("parameter module cleanup \n");
}

module_init(parameter_init);
module_exit(parameter_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Biven Tang <bivent@163.com>");
MODULE_DESCRIPTION("Parameter module!");
MODULE_ALIAS("parameter-module");